home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_400 / 403_01 / matrix.h < prev    next >
Text File  |  1992-05-23  |  3KB  |  129 lines

  1. /*
  2. *-----------------------------------------------------------------------------
  3. *    file:    matrix.h
  4. *    desc:    matrix mathematics header file
  5. *    by:    ko shu pui, patrick
  6. *    date:    24 nov 91    v0.1b
  7. *    revi:
  8. *    ref:
  9. *       [1] Mary L.Boas, "Mathematical Methods in the Physical Sciene,"
  10. *    John Wiley & Sons, 2nd Ed., 1983. Chap 3.
  11. *
  12. *-----------------------------------------------------------------------------
  13. */
  14.  
  15. /*
  16. *-----------------------------------------------------------------------------
  17. *    internal matrix structure
  18. *-----------------------------------------------------------------------------
  19. */
  20. typedef struct {
  21.     int    row;
  22.     int    col;
  23.     }    MATHEAD;
  24.  
  25. typedef struct {
  26.     MATHEAD    head;
  27.     /*
  28.     * only the starting address of the following will be
  29.     * returned to the C programmer, like malloc() concept
  30.     */
  31.     double    *matrix;
  32.     }    MATBODY;
  33.  
  34. typedef    double    **MATRIX;
  35.  
  36. #define    Mathead(a)    ((MATHEAD *)((MATHEAD *)(a) - 1))
  37. #define MatRow(a)    (Mathead(a)->row)
  38. #define    MatCol(a)    (Mathead(a)->col)
  39.  
  40. /*
  41. *----------------------------------------------------------------------------
  42. *    mat_errors definitions
  43. *----------------------------------------------------------------------------
  44. */
  45. #define    MAT_MALLOC    1
  46. #define MAT_FNOTOPEN    2
  47. #define    MAT_FNOTGETMAT    3
  48.  
  49. /*
  50. *----------------------------------------------------------------------------
  51. *    matrice types
  52. *----------------------------------------------------------------------------
  53. */
  54. #define UNDEFINED    -1
  55. #define ZERO_MATRIX    0
  56. #define    UNIT_MATRIX    1
  57.  
  58.  
  59. /* prototypes of matrix package */
  60. #ifdef __TURBOC__
  61.  
  62. MATRIX mat_error    (int);
  63. MATRIX _mat_creat    (int, int);
  64. MATRIX mat_creat    (int, int, int);
  65. MATRIX mat_fill        (MATRIX, int);
  66. int mat_free        (MATRIX);
  67. MATRIX mat_copy        (MATRIX);
  68. MATRIX mat_colcopy1    (MATRIX, MATRIX, int, int);
  69. int fgetmat        (MATRIX, FILE *);
  70. MATRIX mat_dump         (MATRIX);
  71. MATRIX mat_dumpf        (MATRIX, char *);
  72. MATRIX mat_fdump    (MATRIX, FILE *);
  73. MATRIX mat_fdumpf       (MATRIX, char *, FILE *);
  74.  
  75. MATRIX mat_add        (MATRIX, MATRIX);
  76. MATRIX mat_sub        (MATRIX, MATRIX);
  77. MATRIX mat_mul        (MATRIX, MATRIX);
  78. double mat_diagmul    (MATRIX);
  79. MATRIX mat_tran        (MATRIX);
  80. MATRIX mat_inv        (MATRIX);
  81. MATRIX mat_SymToeplz    (MATRIX);
  82.  
  83. int mat_lu        (MATRIX, MATRIX);
  84. MATRIX mat_backsubs1    (MATRIX, MATRIX, MATRIX, MATRIX, int);
  85. MATRIX mat_lsolve    (MATRIX, MATRIX);
  86.  
  87. MATRIX mat_submat    (MATRIX, int, int);
  88. double mat_cofact    (MATRIX, int, int);
  89. double mat_det        (MATRIX);
  90. double mat_minor    (MATRIX, int, int);
  91.  
  92. MATRIX mat_durbin       (MATRIX);
  93. MATRIX mat_lsolve_durbin(MATRIX, MATRIX);
  94. #else
  95.  
  96. MATRIX mat_error    ();
  97. MATRIX _mat_creat    ();
  98. MATRIX mat_creat    ();
  99. MATRIX mat_fill        ();
  100. int mat_free        ();
  101. MATRIX mat_copy        ();
  102. MATRIX mat_colcopy1    ();
  103. int fgetmat        ();
  104. MATRIX mat_dumpf    ();
  105. MATRIX mat_dump        ();
  106. MATRIX mat_fdump    ();
  107.  
  108. MATRIX mat_add        ();
  109. MATRIX mat_sub        ();
  110. MATRIX mat_mul        ();
  111. double mat_diagmul    ();
  112. MATRIX mat_tran        ();
  113. MATRIX mat_inv        ();
  114. MATRIX mat_SymToeplz    ();
  115.  
  116. int mat_lu        ();
  117. MATRIX mat_backsubs1    ();
  118. MATRIX mat_lsolve    ();
  119.  
  120. MATRIX mat_submat    ();
  121. double mat_cofact    ();
  122. double mat_det        ();
  123. double mat_minor    ();
  124.  
  125. MATRIX mat_durbin       ();
  126. MATRIX mat_lsolve_durbin();
  127. #endif
  128.  
  129.